package cn.iocoder.yudao.module.wrdk.service.licence;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;

import java.util.*;
import cn.iocoder.yudao.module.wrdk.controller.admin.licence.vo.*;
import cn.iocoder.yudao.module.wrdk.dal.dataobject.licence.wrdklicenceDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import cn.iocoder.yudao.module.wrdk.convert.licence.wrdklicenceConvert;
import cn.iocoder.yudao.module.wrdk.dal.mysql.licence.wrdklicenceMapper;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.wrdk.enums.ErrorCodeConstants.*;

/**
 * 地块许可证 Service 实现类
 *
 * @author Fan Kaixiang
 */
@Service
@Slf4j
@Validated
public class wrdklicenceServiceImpl implements wrdklicenceService {

    @Resource
    private wrdklicenceMapper wrdklicenceMapper;

    @Override
    public Long createwrdklicence(wrdklicenceCreateReqVO createReqVO) {
        // 插入
        wrdklicenceDO wrdklicence = wrdklicenceConvert.INSTANCE.convert(createReqVO);
        wrdklicenceMapper.insert(wrdklicence);
        // 返回
        return wrdklicence.getId();
    }

    @Override
    public void updatewrdklicence(wrdklicenceUpdateReqVO updateReqVO) {
        // 校验存在
        this.validatewrdklicenceExists(updateReqVO.getId());
        // 更新
        wrdklicenceDO updateObj = wrdklicenceConvert.INSTANCE.convert(updateReqVO);
        wrdklicenceMapper.updateById(updateObj);
    }

    @Override
    public void deletewrdklicence(Long id) {
        // 校验存在
        this.validatewrdklicenceExists(id);
        // 删除
        wrdklicenceMapper.deleteById(id);
    }

    private void validatewrdklicenceExists(Long id) {
        if (wrdklicenceMapper.selectById(id) == null) {
            throw exception(WRDKLICENCE_NOT_EXISTS);
        }
    }

    @Override
    public wrdklicenceDO getwrdklicence(Long id) {
        return wrdklicenceMapper.selectById(id);
    }

    @Override
    public List<wrdklicenceDO> getwrdklicenceList(Collection<Long> ids) {
        return wrdklicenceMapper.selectBatchIds(ids);
    }

    @Override
    public PageResult<wrdklicenceDO> getwrdklicencePage(wrdklicencePageReqVO pageReqVO) {
        return wrdklicenceMapper.selectPage(pageReqVO);
    }

    @Override
    public List<wrdklicenceDO> getwrdklicenceList(wrdklicenceExportReqVO exportReqVO) {
        return wrdklicenceMapper.selectList(exportReqVO);
    }

}
